#!/usr/bin/env node

const fs = require('fs'),       //文件操作需要导入fs模块
      http = require('http'),
      path = require('path'),   //获取文件扩展名需要导入path模块
      file = process.argv[2];

//判断命令行参数
if(process.argv.length != 3){
  console.error('命令行正确格式为：cmd file_name');
  process.exit(1);
}

try{
  
  //readFileSync方法读取文件数据
  var data = fs.readFileSync(file).toString('base64');
} catch(e) {
  console.error(e.message);
  process.exit(2);
}

//使用path模块的extName方法获取文件扩展名
let ext = path.extname(file);

//图片数据生成data URL格式数据
let urlData = 'data:image/' + ext.slice(1, ext.length) + ';base64,' + data;

//把data URL数据嵌入到HTML页面
let html = `
  <!DOCTYPE html>
  <html>
    <head><title>base64 nodejs-demo</title></head>
    <body>
      <img alt="${path.basename(file, ext)}" src="${urlData}">
    </body>
  </html>
`;

//创建HTTP服务,监听8080端口
http.createServer((req, res) =>{
  console.log(req.headers);
  console.log(req.url + '\n');
  res.end(html);
}).listen(8080);
